<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
  <title>Help - Cross Correlation Operator</title>

  
  
  <link rel="stylesheet" href="../style.css">

</head><body>
<table class="header">

  <tbody>
    <tr class="header">
      <td class="header">&nbsp; Cross Correlation<br>
      </td>
      <td class="header" align="right"><a href="../general/Overview.html"><img src="../images/snap_header.jpg" border="0"></a></td>
    </tr>
  </tbody>
</table>

<h3>Cross Correlation Operator</h3>

The Cross Correlation operator&nbsp;is a component of <a href="../tutorials/coregistering_products.html">coregistration</a>.
Image co-registration is an essential step for Interferometry SAR
(InSAR) imaging. It aligns one or more slave images with a master image
in&nbsp;such a way that the each pixel&nbsp;from the co-registered
slave image represents the same point on the Earth surface as its
corresponding pixel in the master image.<br>

<br>

The&nbsp;co-registration is
accomplished through two major processing steps: Cross Correlation
and&nbsp;<a href="WarpOp.html">WARP</a>. In GCP
selection,&nbsp;a set of uniformly spaced <a href="../visat/GcpManagement.html">Ground Control Points</a>
(GCPs) in
the master image are generated first, then their&nbsp;corresponding
GCPs in the slave image are computed.
In WARP processing step, these GCP pairs are used to construct a WARP
distortion function,
which establishes a map between pixels in the master and slave images.
With the WARP function computed,&nbsp;the co-registered image is
generated by mapping the slave image pixels onto master image. <br>

<br>

This
operator computes slave GCPs by&nbsp;coarse registration or coarse and
fine registrations depending on the input images are real or complex.
For real input images, coarse registration is performed, while for
complex images both coarse and fine registrations are performed. The
fine registration uses the image coherence technique to further
increase the precision of the GCPs.<br>

<h4>Coarse Registration</h4>

&nbsp;&nbsp;&nbsp;The coarse
registration&nbsp;is achieved using a cross correlation operation
between the images on a series of imagettes defined across the images.
The major processing steps are listed as the follows:
<br>

<ol>

  <li>For a given master GCP, find initial slave GCP using geographical
position information of GCP.</li>
  <li>Determine the imagettes surrounding the master and slave GCPs
using user selected coarse registration window size. </li>
  <li>Compute new slave GCP position by performing cross-correlation of
the master and slave imagettes. </li>
  <li>If the row or column shift of the new slave GCP from the previous
position is no less than user selected GCP tolerance and the maximum
number of iteration is not reached, then move the slave imagette to the
new GCP position and go back to step 3. Otherwise, save the new slave
GCP and stop. </li>
</ol>

&nbsp;&nbsp;
Those GCPs, for which the maximum number of iterations has been reached
or its final GCP shift is still greater than the tolerance, are
eliminated as invalid GCPs.
<h4>Fine Registration</h4>

&nbsp;&nbsp;The additional fine registration for complex images is
achieved
by&nbsp;maximizing of the complex coherence between the images at a
series
of imagettes defined across the images. It is assumed the coarse
registration has been performed before this operation.
Some major processing steps are given below:
<ol>

  <li>For each given master-slave GCP pair, get complex imagettes
surrounding the master and slave GCPs using user selected coarse
registration window size. </li>
  <li>Compute initial coherence of the two imagettes.</li>
  <li> Start from the initial slave GCP position,&nbsp;the best
sub-pixel shift of slave GCP is computed such that the slave imagette
at the new GCP position gives the maximum coherence with the master
imagette.&nbsp;Powell's method is used in the optimization [1]. </li>
</ol>

&nbsp;&nbsp;
This processing step is optional for complex image co-registration and
user can skip it by uncheckmarking the "Apply fine Registration" box in
the dialog box.<br>

<h4>Coherence Computation</h4>

&nbsp;&nbsp; Given master imagette <span style="font-style: italic;">I</span><sub style="font-style: italic;">1</sub> and slave imagette <span style="font-style: italic;">I</span><sub style="font-style: italic;">2</sub>,
there are two ways to compute the
coherence of the two complex imagettes. <br>

<ul>

  <li>Method 1: Let&nbsp;<span style="font-style: italic;">I</span><sub style="font-style: italic;">1</sub> and <span style="font-style: italic;">I</span><sub style="font-style: italic;">2</sub>
be RxC imagettes and denote by <span style="font-style: italic;">I</span><sub style="font-style: italic;"><sup>*</sup>2</sub> the complex
conjugate&nbsp;of <span style="font-style: italic;">I</span><sub style="font-style: italic;">2</sub>. Then the coherence is computed by
  </li>
</ul>

<br>

<div style="margin-left: 40px;"><img style="width: 391px; height: 130px;" alt="" src="images/gcp_selection_eq1.jpg">
</div>

<ul>

  <li>Method 2:&nbsp;<span style="font-style: italic;"></span><span style="font-style: italic;"></span><span style="font-style: italic;"></span><span style="font-style: italic;"></span>The coherence is computed with
a&nbsp;3x3 (user can change the&nbsp;size) sliding window in two steps:
  </li>
  <ol>
    <li>First for each pixel in the imagette, a 3x3 window centered at
the pixel is determined for both master and slave imagettes, and
coherence is computed for the two windows using equation above. </li>
    <li>Average coherences computed for all pixels in the imagette to
get the final coherence for the imagette.&nbsp;</li>
  </ol>
</ul>

&nbsp;&nbsp; User can select the method to use by&nbsp;<span style="font-style: italic;"></span><span style="font-style: italic;"></span>selecting
radio button "Compute Coherence with Sliding Window". <br>

<h4> Parameters Used</h4>

&nbsp;&nbsp;&nbsp;The parameters used by the Operator are as follows:
<ol>

  <li>Number of GCPs: The total number of GCPs used for the
co-registration.</li>
  <li>Coarse Registration Window Width: The window width for
cross-correlation in coarse GCP selection. It must be power of 2. </li>
  <li>Coarse Registration Window Height: The window height for
cross-correlation in coarse GCP selection. It must be power of 2. </li>
  <li>Row Interpolation Factor: The row upsampling factor used in cross
correlation operation. It must be power of 2. </li>
  <li>Column Interpolation Factor: The column upsampling factor used
in&nbsp;cross correlation operation. It must be power of 2. </li>
  <li>Max Iterations: The maximum number of iterations for computing
coarse slave GCP position. </li>
  <li>GCP Tolerance: The stopping criterion for slave GCP selection.</li>
  <li>Apply fine Registration: Checkbox indicating applying fine
registration for complex image co-registration.</li>
  <li>Coherence Window Size: The dimension of the sliding window used
in coherence computation.</li>
  <li>Coherence Threshold: Only GCPs with coherence above this
threshold will be used in co-registration. </li>
  <li>Fine Registration Window Width: The window width for coherence
calculation in fine GCP selection. It must be power of 2. </li>
  <li>Fine Registration Window Height: The window height for coherence
calculation in fine GCP selection. It must be power of 2. </li>
  <li>Compute Coherence with Sliding Window: If selected, sliding
window with dimension given in 9 will be used in coherence computation.
Otherwise, coherence will be computed directly from all pixel in the
Fine Registration Window without using sliding window. </li>
</ol>

<br>

<br>

<div style="margin-left: 40px;">&nbsp;<br>
</div>

<p><span style="font-style: italic;"> Reference:</span>&nbsp;</p>

<p>[1] William H. Press, Brian P. Flannery, Saul A. Teukolsky, Willaim
T. Vetterling, Numerical Recipes in C: The Art of Scientific Computing,
second eidition, 1992</p>

<br>

<hr>
</body></html>